#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "StdThread.h"
void cleanup(void *arg)
{
    printf("clear arg success\n");
    free((char*)arg);
}
void *Func_Thread1(void *arg)
{
    char *ptr=(char*)malloc(100);
    pthread_cleanup_push(cleanup,ptr);
    static int num=0;
    while(1)
    {
        num++;
        if(num==5)
        {
            break;
        }
        printf("i am thread 1  \n");
        sleep(1);
        
    }
    printf("ready to clean pthread\n");
    pthread_cleanup_pop(1);
    return NULL;

}
void *Func_Thread2(void *arg)
{
    printf("i am thread 2   \n");
    sleep(1);

}

void main()
{
    // int a=10;
    // pthread_t thread1,thread2;
    // pthread_create(&thread1,NULL,Func_Thread1,(void*)&a);
    // // pthread_create(&thread2,NULL,Func_Thread2,(void*)&a);
    // // pthread_detach(thread2);
    // // sleep(5);
    

    
    // // pthread_cancel(thread1);

    // // void *value;
    // // pthread_join(thread1,&value);
    // // printf("%d\n",*((int*)value));

    // while(1);
    thread *t=InitThread(Func_Thread2,NULL);
    // sleep(3);
    // CloseThread(t);
    JoinThread(t);
}